package add_$20_TCP;
/* 

在Server0的基础上加上死循环，即可处理多个客户端的请求
再放到线程中，在每个客户端都运行这个线程，使服务端的处理任务具有并发性，对每个客户端的处理任务相互独立

 */
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server1 {

    public static void main(String[] args) throws IOException, InterruptedException {
        // TODO Auto-generated method stub
        
        new TCPServer1().listen();
    }

}
class TCPServer1 {
    
    public void listen() throws IOException, InterruptedException {
        
        ServerSocket serverSocket = new ServerSocket(7788);
        
        while(true) {
            
            // 调用accept方法，监听客户端，使服务端在与客户端建立连接之前一直等待，代码无法往下运行
            Socket client = serverSocket.accept();
            
            new Thread() {
                public void run() {
                    try {
                        // 获取输出流
                        OutputStream os = client.getOutputStream();
                        System.out.println("开始与客户端交互数据");
                        os.write("大庆师范欢迎您！！！".getBytes());
                        
                        Thread.sleep(5000);
                        
                        System.out.println("结束与客户端交互数据");
                        
                        // 释放资源
                        os.close();
                        client.close();
                        
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }
    }
}